<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>2.5.2rest参数</title>
    </head>
    <body>
        <script>
            //【例2.32】rest参数
            function join(){
                var str = "";
                for (var i =0; i< arguments.length;i++){
                    if(i==0){
                        str = arguments[i];
                    }else{
                        str += "|" +arguments[i];
                    }
                }
                return str;
            }

            console.log(join("hello","world"));
            //ES6方式
            function join2(...strs){
                var str = "";
                for (var i =0;i<strs.length;i++){
                    if(i == 0){
                        str = strs[i];
                    }else{
                        str +="|" + strs[i];
                    }
                }
                return str;
            }
            //join函数使用传统的arguments对象完成,而join2函数利用rest参数，可以向该函数传入任意数目的参数

            //【例2.33】rest参数应用-计算器
            function calculate(method,...nums){
                let result;
                if(!method || nums.length == 0){
                    alert('请传入参数');
                    return;
                }
                if(method == '*' ){
                    result = 1;
                    for(let i =0;i<nums.length;i++){
                        result *= nums[i];
                    }
                }else if(method == '+'){
                    result=0;
                    for(let i=0;i<nums.length;i++){
                        result += nums[i];
                    }
                }
                alert(result);
            }
            calculate("+",1,2);//3
            calculate("+",1,2,3,4,5);//15
            calculate("*",1,2,3);//6
            calculate("*",1,2,3,4,5);//120
            //calculate函数是负责计算的函数，第一个参数代表运算符，后面的运算符个数不限，通过rest参数进行接受。
        </script>
    </body>
</html>